/**
 * @author joshua
 */

joshua.envios.TabDetalle=Ext.extend( Ext.Panel,{
	width:250,
	max_envio:'',
	prefijo:'',
	id_envio:'',
	titleAnt:'',
	titleSig:'',
	estatus:'',
	conflicto:'',
	storeADomicilio:[
				['Entregado', 'Entregado'],
				['En proceso de entrega', 'En proceso de entrega'], 
				['Decomisado', 'Decomisado'], 
				['No reclamado', 'No reclamado']
	],
	storeOcurre:[
				['Entregado', 'Entregado'], 
				['Decomisado', 'Decomisado'], 
				['No reclamado', 'No reclamado']
	],
	rastreo_ups:false,//joshua.envios.TabDetalleUPS({
						//referencia:''
					//});
	id_cliente_destinatario:'',//lo uso para saber el id del cliente cuando verifica
	
 	initComponent:function(){

		var _yo=this;

		this.formTransportadora= new joshua.envios.TransportadoraForm({
			reinicia: function (){
				_yo.comboEstatus.reset();
			},
			success: function (){
				_yo.cargarEnvio();
			}
		});

		this.formFormaPago= new joshua.util.FormaPagoForm({
			success: function (){
				_yo.cargarEnvio();
				_yo.formFormaPago.hide();
			}
		});

                this.form_verificar= new joshua.clientes.Form({
			success: function(form, action){
                                _yo.cargarEnvio();
				//var respuesta = Ext.util.JSON.decode(action.response.responseText);
				this.limpiarForm();
				this.hide();
				//yo__.listar('{"txtId":"' + respuesta.id + '"}');
			}
		});

                //meterle un campo mas al tab 1. Persona entrevistada
                this.form_verificar.form.items.items[0].items.items[0].items.items.push( new Ext.form.TextField({
				fieldLabel: 'Entrevistado',
				name: 'txt_verificar_entr',
                                width: 230,
                                allowBlank:false,
				vtype: 'capitalize'
		}));
                        
		this.btnUPS= new Ext.Button({
			text     : 'Rastrear',
			iconCls: 'upslogoicon',
			tooltip:'Abrir un nuevo tab con la informacion detallada de UPS',
			scope:this,
			handler  : function(){
                var c=this.prefijo+"-"+this.id_envio;
                window.open('http://wwwapps.ups.com/WebTracking/OnlineTool?InquiryNumber='+c+'&UPS_HTML_License=BC46FCBDD8D5DBE6&IATA=MX&Lang=spa&TypeOfInquiryNumber=R');

			}			
		});
		this.btnAnt= new Ext.Button({
			text     : 'anterior',
			iconCls: 'arrowback',
			scope:this,
			tooltip:'Mostrar el envio anterior',
			handler  : function(){
				var i=this.titleAnt.split("-");
				this.cambiarEnvio(this.titleAnt, parseInt(i[1]));
			}			
		});
		this.btnSig= new Ext.Button({
			text     : 'siguiente',
			iconCls: 'arrowforward',
			scope:this,
			tooltip:'Mostrar el siguiente envio',
			handler  : function(){
				var i=this.titleSig.split("-");
				this.cambiarEnvio(this.titleSig, parseInt(i[1]));
			}			
		});
		


		this.comboEstatus= new joshua.combos.EstatusMin({
			width:150,
			listeners: {
				scope:this,
				select: function (combo){
					if(combo.getValue()=="En proceso de entrega"){
						//alert('yea');
						_yo.formTransportadora.show();
						
					}else
						this.entregar(combo.getValue());
				}
			}
			});
		this.btnConflicto= new Ext.Button({
			text     : 'Quitar estado conflicto',
			iconCls:'cancel',
			scope:this,
			tooltip:'Presione para que el envio ya no este en conflicto',
			handler  : this.quitarConflicto
		});
		
		
		this.btnEntregado= new Ext.Button({
			text     : 'Entregado',
			iconCls: 'entregadomeddal',
			tooltip:'Presione para marcar el envio como entregado',
			scope:this,
			handler  : function(){
				this.entregar("Entregado");
			}			
		});



 		Ext.apply(this,{
			title: this.prefijo+"-"+this.id_envio,
			tbar:[this.btnAnt,'-',
				this.btnSig,{
					text     : 'Imprimir recibo',
					iconCls: 'imprimir',
					tooltip:'Imprimir el recibo del envio',
					scope:this,
					handler  : function(){
						this.imprimir(this.id_envio);
					}
				},'-',{
					text     : 'Agregar comentario',
					iconCls:'comment_add',
					scope:this,
					tooltip:'Presione para agregar un comentario a este envio',
					handler  : this.mostrarVentanaComentario
				},'-',
				this.btnUPS,this.btnConflicto,'->',
				this.btnEntregado,'-','<b>Cambiar estatus a: </b>',
				this.comboEstatus
			],
			html:'<div id="informacionEnvio'+_yo.id+'"></div>',
			tabTip   : "Detalles del envio "+this.prefijo+"-"+this.id_envio,
			autoScroll:true,
			closable : true
 		});
 		joshua.envios.TabDetalle.superclass.initComponent.apply(this,arguments);
 	},//fin init

    imprimir: function (id){
        var _4="Impresion/Recibo_envio.php?ide="+id;
        window.open(_4,"Impresion","width=770,height=450, scrollbars=yes, toolbar=no, directories=no, status=no, menubar=yes,location=no, resize=no, left=312, top=134");
    },

 	onRender:function(){
 		//call parent
 		joshua.envios.TabDetalle.superclass.onRender.apply(this,arguments);
 	
	//	alert(this.id);
		this.cargarEnvio();

        this.teclasSig= new Ext.KeyMap(this.getEl(), [{
                key: [38,39],
                scope: this,
                fn: function(){
                    var i=this.titleSig.split("-");
                    this.cambiarEnvio(this.titleSig, parseInt(i[1]));
                }
            }]);

         this.teclasAnt= new Ext.KeyMap(this.getEl(), [ {
                key:[37,40],
                scope: this,
                fn: function(){
                    var i=this.titleAnt.split("-");
                    this.cambiarEnvio(this.titleAnt, parseInt(i[1]));
                }
            }]);
 	},
	
	entregar: function (valor){
		Ext.MessageBox.confirm('Confirmar','Esta seguro de cambiar el estatus a '+valor+" ?",
			function (btn){		
				if(btn=='yes'){
					this.cambiarEstatus(this.id_envio,valor);			
				}else
					this.comboEstatus.reset();
		},this);//eo msg box
	},
	
	mostrarVentanaComentario: function (){
		if(joshua.comentarios.ventana== undefined)
		//si la ventana no esta creada creala
			joshua.comentarios.ventana=new joshua.comentarios.Ventana();


		//configurar la funcion que ejecuta cuando el boton aceptar se ejecutar
		var _yoo=this;
		var func= function (){

			this.btnOk.disable();
			var tc=this.tipo_comentario.getValue();
			var c=this.comentario.getValue()

			var conn=new Ext.data.Connection();
			conn.request({
				url:'Servicios/s.php', 
				params:{
					cmd:'agregarNota',
					className:'Envio',
					txtId:_yoo.id_envio,
					c:c,
					tc:tc
				},
				scope:this,
				success:function(resp,opt){		
					_yoo.cargarEnvio();
					this.btnOk.enable();
					this.hide();
					this.tipo_comentario.reset();
					this.comentario.reset()

				}
			});			
		}

		joshua.comentarios.ventana.btnOk.handler=func;
		joshua.comentarios.ventana.tipo_propietario='Envio';
		joshua.comentarios.ventana.id_propietario=this.id_envio;

		joshua.comentarios.ventana.show();
	},

	_agregarComentario: function (tc,c,id){
		var conn=new Ext.data.Connection();
		var _yoo=this;
		this.detenerIluminacion();
		conn.request({
			url:'Servicios/s.php', params: 'cmd=agregarNota&className=Envio&txtId='+id+"&c="+c+"&tc="+tc,
			scope:this,
			success:function(resp,opt){		
				_yoo.cargarEnvio();
				joshua.comentarios.ventana.hide();
			}
		});
	},
	
	quitarConflicto: function (){
		this.btnConflicto.hide();
		var conn=new Ext.data.Connection();
		conn.request({
			url:'Servicios/s.php', 
			params: {
				cmd:'qConflicto',
				className:'Envio',
				txtId:this.id_envio
			},
			scope:this,
			success:function(resp,opt){		
				this.cargarEnvio();
			}
		});

	},
	deshabilitaConflicto: function (){
		if(this.conflicto == 0)
			this.btnConflicto.hide();//disable();
		else	
			this.btnConflicto.show();//enable();
	},
	deshabilitaMax: function (){
		if(this.titleSig == ""){
			this.btnSig.hide();//disable();
            this.teclasSig.disable();
        }
		else{
			this.btnSig.show();//enable();
            this.teclasSig.enable();
        }

	},
	deshabilitaMin: function (){
		if(this.titleAnt == ""){
			this.btnAnt.hide();//disable();
            this.teclasAnt.disable();
        }
		else{
			this.btnAnt.show();//enable();
            this.teclasAnt.enable();
        }
	},
	deshabilitaUps: function (){
		if(!this.rastreo_ups)
			this.btnUPS.hide();//disable();
		else	
			this.btnUPS.show();//enable();
	},
	deshabilitaComboEstatus: function (){
		if(this.estatus == "Entregado"){
			this.btnEntregado.hide();
			this.comboEstatus.disable();
		}
		else{
			this.btnEntregado.show();
			this.comboEstatus.enable();
		}	
	},
	
	existeEnvio: function (titlee,id_envio){
		var g=Ext.getCmp('tabEnviosMain').items;
		for(var f=1/*El primero lo omito porque siempre es "Lista de envios"*/; f<g.length; f++)
		{//para cada uno de los ids de los tabs
			var it=Ext.getCmp(g.keys[f]);
			if( it.title == titlee)
				return g.keys[f];//id del tab contenedor del envio
		}
		return false;
	},
	cambiarEstatus: function (id_envio,combovalor){
		if(this.tipo_servicio!="Pagado" && combovalor=="Entregado"){
			this.formFormaPago.show();	
		}
		else{
			var conn=new Ext.data.Connection();
			var _f=this.id;
			this.getEl().mask('<img src="./img/loading2.gif" style="width:16px;height:16px;" align="rigth; padding:100px 0 0 0;"> Cargando ...');
			conn.request({
				url:'Servicios/s.php', params: 'cmd=cambiarE&className=Envio&txtId='+id_envio+"&e="+combovalor,
				scope:this,
				success:function(resp,opt){		
					this.cargarEnvio();
					this.getEl().unmask();
				}
			});	
		}
	},
	cambiarEnvio: function (titlee,id_envio){
		var id_tab_envio=this.existeEnvio(titlee,id_envio);
		if(id_tab_envio){
		//si ya existe el tab de ese envio
			Ext.getCmp('tabEnviosMain').setActiveTab(id_tab_envio);
			return ;
		}

		this.setTitle(titlee);
		this.id_envio=id_envio;
		this.detenerIluminacion();
		this.cargarEnvio();
		//no existe el tab de detalle del envio aun
	},
	cargarEnvio: function (){
		this.comboEstatus.reset();
		this.formTransportadora.id_envio=this.id_envio;
		this.formFormaPago.id_envio=this.id_envio;
		
		var conn=new Ext.data.Connection();
		var _f=this.id;
		this.getEl().mask('<img src="./img/loading2.gif" style="width:16px;height:16px;" align="rigth; padding:100px 0 0 0;"> Cargando ...');
		conn.request({
			url:'Servicios/Envios/v_infoenvio.php', params: 'id_envio='+this.id_envio,
			scope:this,
			success:function(resp,opt){		

				Ext.get("informacionEnvio"+_f).update(resp.responseText);
				this.getEl().unmask();

                                if(! Ext.isEmpty(Ext.get('content-tip' + this.id_envio)))
                                    new Ext.ToolTip({
                                        title: 'Informaci&oacute;n original en recibo',
                                        target: 'contenedorRemitente'+ this.id_envio,
                                        anchor: 'left',
                                        html: null,
                                        width: 340,
                                        dismissDelay: 25000, // auto hide after 15 seconds
                                        contentEl: 'content-tip'+ this.id_envio
                                    });
				
				if(! Ext.isEmpty(Ext.get('divBtnDestina_' + this.id_envio)))
					new Ext.Button({
						renderTo: 'divBtnDestina_' + this.id_envio,
						text: '<b>Verificar direccion</b>',
						iconCls: 'vcard',
						scope:this,
						tooltip: 'Presione para verificar la direccion del remitente',
						handler: function(){
                                                    this.mostrarVentanaVerificar(this.id_cliente_destinatario);
						}
					});
				
				if(! Ext.isEmpty(Ext.get("adomicilio_"+this.id_envio)))
					this.iniciarIluminacion();
			}
		});
		
		var conn2=new Ext.data.Connection();
		conn2.request({
			url:'Servicios/s.php',
            params: 'cmd=infotab&className=Envio&id_envio='+this.id_envio,
			scope:this,
			success:function(resp,opt){		

				var respuesta=Ext.util.JSON.decode(resp.responseText);

				this.tipo_servicio=respuesta.tipo_servicio;
				this.tipo_entrega=respuesta.tipo_entrega;
				
				this.max_envio=respuesta.max_id_envio;
				this.prefijo=respuesta.prefijo;
				this.titleAnt=respuesta.titleAnt;
				this.titleSig=respuesta.titleSig;
				this.estatus=respuesta.estatus;
				this.conflicto=respuesta.conflicto;
				this.rastreo_ups=respuesta.rastreo_ups;
				this.id_cliente_destinatario=respuesta.id_cliente_destinatario;
				
				this.deshabilitaMin();
				this.deshabilitaMax();
				this.cargarStoreComboestatus();
				this.deshabilitaComboEstatus();
				this.deshabilitaConflicto();
				this.deshabilitaUps();
			}
		});
	},
	cargarStoreComboestatus: function(){
		if(this.tipo_entrega=="A domicilio")
			this.comboEstatus.store.loadData(this.storeADomicilio );
		else
			this.comboEstatus.store.loadData(this.storeOcurre);
	},
	
	mostrarVentanaVerificar: function (id_remitente){
	//	if(joshua.clientes.formulario==undefined)
	//		joshua.clientes._crearFormVentana();

	//	Ext.getCmp('txt_verificar_entr').show();
		
		this.form_verificar.cmd="verificar";
		this.form_verificar.setTitle("Verificar informacion de cliente",'aceptar');
		this.form_verificar.limpiarForm();
                this.form_verificar.idActualizar=id_remitente;
		this.form_verificar.cargarForm(id_remitente);
		
		/*var _yoo=this;
		joshua.clientes.ventana_form.buttons[0].handler=function (){
		    joshua.clientes.formulario.guardarForm({
				success:function (form,action){
						_yoo.cargarEnvio();
						joshua.clientes.ventana_form.hide();
					}
			});

		}*/
		
		this.form_verificar.show(this);
	},

        
	iniciarIluminacion: function (){
		var _yoo=this;
		var iluminati=function (){
			if(! Ext.isEmpty(Ext.get("adomicilio_"+_yoo.id_envio)))
				Ext.get("adomicilio_"+_yoo.id_envio).highlight();
			else
				_yoo.detenerIluminacion();
		};

		this.task_iluminar = {
		    run: iluminati,
		    interval: 1500 //1 second
		}
		
		this.iluminar=new Ext.util.TaskRunner();
		this.iluminar.start(this.task_iluminar);

		this.on('destroy',this.detenerIluminacion,this);
	},
	detenerIluminacion: function (){
		if(!Ext.isEmpty(this.iluminar))
			this.iluminar.stop(this.task_iluminar) ;
	}	
}); 
  
Ext.reg('tabDetalleEnvio',joshua.envios.TabDetalle);
